BASIC-23 基础练习 芯片测试 
问题描述
　　有n（2≤n≤20）块芯片，有好有坏，已知好芯片比坏芯片多。
　　每个芯片都能用来测试其他芯片。用好芯片测试其他芯片时，能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时，会随机给出好或是坏的测试结果（即此结果与被测试芯片实际的好坏无关）。
　　给出所有芯片的测试结果，问哪些芯片是好芯片。
输入格式
　　输入数据第一行为一个整数n，表示芯片个数。
　　第二行到第n+1行为n*n的一张表，每行n个数据。表中的每个数据为0或1，在这n行中的第i行第j列（1≤i, j≤n）的数据表示用第i块芯片测试第j块芯片时得到的测试结果，1表示好，0表示坏，i=j时一律为1（并不表示该芯片对本身的测试结果。芯片不能对本身进行测试）。
输出格式
　　按从小到大的顺序输出所有好芯片的编号
样例输入
3
1 0 1
0 1 0
1 0 1
样例输出
1 3
分析：因为超过半数的芯片是好的，所以这些芯片对于其他芯片的测试结果是正确的。
所以假设该芯片是好芯片，它除了它自身测试自身之外的其他测试结果为好的个数将超过一半。
同理，假设该芯片是坏芯片，他将有超过半数的测试结果是坏芯片。
所以只要根据每一列的所有测试结果，判断其为好芯片的总数>=n/2的时候，这个芯片就是好芯片。

#include <iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    int a[20][20];
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++) {
            cin >> a[i][j];
        }
    }
    for(int i = 0; i < n; i++) {
        int cnt = 0;
        for(int j = 0; j < n; j++) {
            if(j != i)
                cnt += a[j][i];
        }
        if(cnt >= n/2) {
            cout << i+1 << " ";
        }
    }
    return 0;
}